package pe.com.csi.pm.regexiv.util;

import java.io.File;

import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import pe.com.csi.pm.regexiv.bean.Concesion;
import pe.com.csi.pm.regexiv.bean.Ruta;
import pe.com.csi.pm.regexiv.bean.Tramo;
import pe.com.csi.pm.regexiv.bean.Usuario;

public class USincronizacion {

	public static List<Concesion> concesion(File f) {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		List<Concesion> concesiones = new ArrayList<Concesion>();

		try {
			DocumentBuilder builder = factory.newDocumentBuilder();
			Document dom = builder.parse(f);
			Element root = dom.getDocumentElement();
			NodeList nodeList = root.getElementsByTagName("ROW");

			for (int i = 0; i < nodeList.getLength(); i++) {
				Concesion c = new Concesion();
				Element element = (Element) nodeList.item(i);
				NodeList nodeList2 = element.getElementsByTagName("COLUMN");

				if (nodeList2 != null && nodeList2.getLength() > 0) {
					for (int j = 0; j < nodeList2.getLength(); j++) {
						long idCces = 0;
						String nombreCces = "";
						long estadoCces = 0;
						String fechaIniCces = "";
						String fechaFinCces = "";
						String fechaAltCces = "";
						String direccionCces = "";
						String telefonoCces = "";
						String personaContCces = "";
						long idCceso = 0;
						long idFcuene = 0;
						long idUsua = 0;
						Element el = (Element) nodeList2.item(j);
						String etiqueta = el.getAttribute("NAME");
						if (etiqueta.equalsIgnoreCase("IDCCES")) {
							Node n = el.getFirstChild();
							if (n != null) {
								try {
									idCces = new Long(n.getNodeValue());
								} catch (NumberFormatException nf) {
								}

							}
							c.setIdCces(idCces);
						} else if (etiqueta.equalsIgnoreCase("NOMBRECCES")) {
							Node n = el.getFirstChild();
							if (n != null) {
								nombreCces = n.getNodeValue();
							}
							c.setNombreCces(nombreCces);
						} else if (etiqueta.equalsIgnoreCase("ESTADOCCES")) {
							Node n = el.getFirstChild();
							if (n != null) {
								try {
									estadoCces = new Long(n.getNodeValue());
								} catch (NumberFormatException nf) {
								}

							}
							c.setEstadoCces(estadoCces);
						} else if (etiqueta.equalsIgnoreCase("FECHAINICCES")) {
							Node n = el.getFirstChild();
							if (n != null) {
								fechaIniCces = n.getNodeValue();
							}
							c.setFechaIniCces(fechaIniCces);
						} else if (etiqueta.equalsIgnoreCase("FECHAFINCCES")) {
							Node n = el.getFirstChild();
							if (n != null) {
								fechaFinCces = n.getNodeValue();
							}
							c.setFechaFinCces(fechaFinCces);
						} else if (etiqueta.equalsIgnoreCase("FECHAALTCCES")) {
							Node n = el.getFirstChild();
							if (n != null) {
								fechaAltCces = n.getNodeValue();
							}
							c.setFechaAltCces(fechaAltCces);
						} else if (etiqueta.equalsIgnoreCase("DIRECCIONCCES")) {
							Node n = el.getFirstChild();
							if (n != null) {
								direccionCces = n.getNodeValue();
							}
							c.setDireccionCces(direccionCces);
						} else if (etiqueta.equalsIgnoreCase("TELEFONOCCES")) {
							Node n = el.getFirstChild();
							if (n != null) {
								telefonoCces = n.getNodeValue();
							}
							c.setTelefonoCces(telefonoCces);
						} else if (etiqueta.equalsIgnoreCase("PERSONACONTCCES")) {
							Node n = el.getFirstChild();
							if (n != null) {
								personaContCces = n.getNodeValue();
							}
							c.setPersonaContCces(personaContCces);
						} else if (etiqueta.equalsIgnoreCase("IDCCESO")) {
							Node n = el.getFirstChild();
							if (n != null) {
								try {
									idCceso = new Long(n.getNodeValue());
								} catch (NumberFormatException nf) {
								}

							}
							c.setIdCceso(idCceso);
						} else if (etiqueta.equalsIgnoreCase("IDFCUENE")) {
							Node n = el.getFirstChild();
							if (n != null) {
								try {
									idFcuene = new Long(n.getNodeValue());
								} catch (NumberFormatException nf) {
								}

							}
							c.setIdFcuene(idFcuene);
						} else if (etiqueta.equalsIgnoreCase("IDUSUA")) {
							Node n = el.getFirstChild();
							if (n != null) {
								try {
									idUsua = new Long(n.getNodeValue());
								} catch (NumberFormatException nf) {
								}
							}
							c.setIdUsua(idUsua);
						}
					}
				}
				concesiones.add(c);
			}

		} catch (Exception ex) {
			ex.printStackTrace();
		}

		return concesiones;
	}

	public static List<Ruta> rutas(File f) {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		List<Ruta> rutas = new ArrayList<Ruta>();

		try {
			DocumentBuilder builder = factory.newDocumentBuilder();
			Document dom = builder.parse(f);
			Element root = dom.getDocumentElement();
			NodeList nodeList = root.getElementsByTagName("ROW");

			for (int i = 0; i < nodeList.getLength(); i++) {
				Ruta r = new Ruta();
				Element element = (Element) nodeList.item(i);
				NodeList nodeList2 = element.getElementsByTagName("COLUMN");

				if (nodeList2 != null && nodeList2.getLength() > 0) {
					for (int j = 0; j < nodeList2.getLength(); j++) {
						long numeroRta = 0;
						String nombreRta = "";
						double progIniRta = 0;
						double progFinRta = 0;
						String numRealRta = "";
						Element el = (Element) nodeList2.item(j);
						String etiqueta = el.getAttribute("NAME");
						if (etiqueta.equalsIgnoreCase("NUMERORTA")) {
							Node n = el.getFirstChild();
							if (n != null) {
								try {
									numeroRta = new Long(n.getNodeValue());
								} catch (NumberFormatException nf) {
								}
							}
							r.setNumeroRta(numeroRta);
						} else if (etiqueta.equalsIgnoreCase("NOMBRERTA")) {
							Node n = el.getFirstChild();
							if (n != null) {
								nombreRta = n.getNodeValue();
							}
							r.setNombreRta(nombreRta);
						} else if (etiqueta.equalsIgnoreCase("PROGINIRTA")) {
							Node n = el.getFirstChild();
							if (n != null) {
								try {
									progIniRta = new Double(n.getNodeValue());
								} catch (NumberFormatException nf) {
								}
							}
							r.setProgIniRta(progIniRta);
						} else if (etiqueta.equalsIgnoreCase("PROGFINRTA")) {
							Node n = el.getFirstChild();
							if (n != null) {
								try {
									progFinRta = new Double(n.getNodeValue());
								} catch (NumberFormatException nf) {
								}
							}
							r.setProgFinRta(progFinRta);
						} else if (etiqueta.equalsIgnoreCase("NREALRTA")) {
							Node n = el.getFirstChild();
							if (n != null) {
								numRealRta = n.getNodeValue();
							}
							r.setNumRealRta(numRealRta);
						}
					}
				}
				rutas.add(r);
			}

		} catch (Exception ex) {
			ex.printStackTrace();
		}

		return rutas;
	}

	public static List<Tramo> tramos(File f) {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		List<Tramo> tramos = new ArrayList<Tramo>();

		try {
			DocumentBuilder builder = factory.newDocumentBuilder();
			Document dom = builder.parse(f);
			Element root = dom.getDocumentElement();
			NodeList nodeList = root.getElementsByTagName("ROW");

			for (int i = 0; i < nodeList.getLength(); i++) {
				Tramo t = new Tramo();
				Element element = (Element) nodeList.item(i);
				NodeList nodeList2 = element.getElementsByTagName("COLUMN");

				long idTmo = 0;
				String nombreTmo = "";
				double pInicialTmo = 0;
				double pFinalTmo = 0;
				double longitudTmo = 0;
				long idCces = 0;
				long numeroRta = 0;
				double altitudTmo = 0;
				if (nodeList2 != null && nodeList2.getLength() > 0) {
					for (int j = 0; j < nodeList2.getLength(); j++) {

						Element el = (Element) nodeList2.item(j);
						String etiqueta = el.getAttribute("NAME");
						if (etiqueta.equalsIgnoreCase("IDTMO")) {
							Node n = el.getFirstChild();
							if (n != null) {
								try {
									idTmo = new Long(n.getNodeValue());
								} catch (NumberFormatException nf) {
									nf.printStackTrace();
								}

							}
							t.setIdTmo(idTmo);
						} else if (etiqueta.equalsIgnoreCase("NOMBRETMO")) {
							Node n = el.getFirstChild();
							if (n != null) {
								nombreTmo = n.getNodeValue();
							}
							t.setNombreTmo(nombreTmo);
						} else if (etiqueta.equalsIgnoreCase("PINICIALTMO")) {
							Node n = el.getFirstChild();
							if (n != null) {
								try {
									pInicialTmo = new Double(n.getNodeValue());
								} catch (NumberFormatException nf) {
									nf.printStackTrace();
								}

							}
							t.setpInicialTmo(pInicialTmo);
						} else if (etiqueta.equalsIgnoreCase("PFINALTMO")) {
							Node n = el.getFirstChild();
							if (n != null) {
								try {
									pFinalTmo = new Double(n.getNodeValue());
								} catch (NumberFormatException nf) {
									nf.printStackTrace();
								}

							}
							t.setpFinalTmo(pFinalTmo);
						} else if (etiqueta.equalsIgnoreCase("LONGITUDTMO")) {
							Node n = el.getFirstChild();
							if (n != null) {
								try {
									longitudTmo = new Double(n.getNodeValue());
								} catch (NumberFormatException nf) {
									nf.printStackTrace();
								}

							}
							t.setLongitudTmo(longitudTmo);
						} else if (etiqueta.equalsIgnoreCase("IDCCES")) {
							Node n = el.getFirstChild();
							if (n != null) {
								try {
									idCces = new Long(n.getNodeValue());
								} catch (NumberFormatException nf) {
									nf.printStackTrace();
								}

							}
							t.setIdCces(idCces);
						} else if (etiqueta.equalsIgnoreCase("NUMERORTA")) {
							Node n = el.getFirstChild();
							if (n != null) {
								try {
									numeroRta = new Long(n.getNodeValue());
								} catch (NumberFormatException nf) {
									nf.printStackTrace();
								}

							}
							t.setNumeroRta(numeroRta);
						} else if (etiqueta.equalsIgnoreCase("ALTITUDTMO")) {
							Node n = el.getFirstChild();
							if (n != null) {
								try {
									altitudTmo = new Double(n.getNodeValue());
								} catch (NumberFormatException nf) {
									nf.printStackTrace();
								}
							}
							t.setAltitudTmo(altitudTmo);
						}
					}
				}
				tramos.add(t);
			}

		} catch (Exception ex) {
			ex.printStackTrace();
		}

		return tramos;
	}

	public static List<Usuario> usuarios(File f) {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		List<Usuario> usuarios = new ArrayList<Usuario>();

		try {
			DocumentBuilder builder = factory.newDocumentBuilder();

			Document dom = builder.parse(f);
			Element root = dom.getDocumentElement();
			NodeList nodeList = root.getElementsByTagName("ROW");

			for (int i = 0; i < nodeList.getLength(); i++) {
				Usuario u = new Usuario();
				Element element = (Element) nodeList.item(i);
				NodeList nodeList2 = element.getElementsByTagName("COLUMN");

				if (nodeList2 != null && nodeList2.getLength() > 0) {
					for (int j = 0; j < nodeList2.getLength(); j++) {
						long idUsua = 0;
						String nombreUsua = "";
						String apellidoUsua = "";
						String claveUsua = "";
						Long idRol = null;
						String usuarioUsua = "";
						Long idestado = null;

						Element el = (Element) nodeList2.item(j);
						String etiqueta = el.getAttribute("NAME");
						if (etiqueta.equalsIgnoreCase("IDUSUA")) {
							Node n = el.getFirstChild();
							if (n != null) {
								try {
									idUsua = new Long(n.getNodeValue());
								} catch (NumberFormatException nf) {
								}
							}
							u.setIdUsua(idUsua);
						} else if (etiqueta.equalsIgnoreCase("NOMBREUSUA")) {
							Node n = el.getFirstChild();
							if (n != null) {
								nombreUsua = n.getNodeValue();
							}
							u.setNombreUsua(nombreUsua);
						} else if (etiqueta.equalsIgnoreCase("APELLIDOUSUA")) {
							Node n = el.getFirstChild();
							if (n != null) {
								apellidoUsua = n.getNodeValue();
							}
							u.setApellidoUsua(apellidoUsua);
						} else if (etiqueta.equalsIgnoreCase("CLAVEUSUA")) {
							Node n = el.getFirstChild();
							if (n != null) {
								claveUsua = n.getNodeValue();
							}
							u.setClaveUsua(claveUsua);
						} else if (etiqueta.equalsIgnoreCase("IDROL")) {
							Node n = el.getFirstChild();
							if (n != null) {
								try {
									idRol = new Long(n.getNodeValue());
								} catch (NumberFormatException nf) {
								}
							}
							u.setIdRol(idRol);
						} else if (etiqueta.equalsIgnoreCase("USUARIOUSUA")) {
							Node n = el.getFirstChild();
							if (n != null) {
								usuarioUsua = n.getNodeValue();
							}
							u.setUsuarioUsua(usuarioUsua);
						} else if (etiqueta.equalsIgnoreCase("ISACTUSUA")) {
							Node n = el.getFirstChild();
							if (n != null) {
								idestado = new Long(n.getNodeValue());
							}
							u.setIsactUsua(idestado);
						}
					}
				}
				usuarios.add(u);
			}

		} catch (Exception ex) {
			ex.printStackTrace();
		}

		return usuarios;
	}

}
